package com.chenjunlin.shortlink.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.chenjunlin.shortlink.admin.dao.entity.UserDO;
import com.chenjunlin.shortlink.admin.dto.reqtDTO.UserLoginReqDTO;
import com.chenjunlin.shortlink.admin.dto.reqtDTO.UserRegisterReqDTO;
import com.chenjunlin.shortlink.admin.dto.reqtDTO.UserUpdateReqDTO;
import com.chenjunlin.shortlink.admin.dto.resp.UserLoginRespDTO;
import com.chenjunlin.shortlink.admin.dto.resp.UserRespDTO;

public interface UserService extends IService<UserDO> {

    /**
     * 根据username查找userDO
     * @param username
     * @return
     */
    UserRespDTO getUserByUsername(String username);

    /**
     * 判断用户名是否可用(重复)
     * @param username
     * @return
     */
   Boolean validUsername(String username);

    /**
     * 用户注册功能
     * @param userRegisterReqDTO
     * @return
     */
    void register(UserRegisterReqDTO userRegisterReqDTO);

    /**
     * 用户修改功能
     * @param userUpdateReqDTO
     * @return
     */
    void updateUser(UserUpdateReqDTO userUpdateReqDTO);

    /**
     * 用户登录功能
     * @param userLoginReqDTO
     * @return
     */
    UserLoginRespDTO login(UserLoginReqDTO userLoginReqDTO);

    /**
     * 检测用户是否登录，是返回true
     * @param username
     * @param token
     * @return
     */
    Boolean checkLogin(String username, String token);

    /**
     * 用户登出功能
     * @param username
     * @param token
     * @return
     */
    void logout(String username, String token);
}
